package com.heima.feign;

import com.heima.fallback.ArticleClientFallback;
import com.heima.interceptor.FeignRequestInterceptor;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.pojos.Article;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.pojos.WmNews;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * @author chenshan
 */
@FeignClient(value = "leadnews-article", fallbackFactory = ArticleClientFallback.class, configuration = FeignRequestInterceptor.class)
public interface ArticleFeignClient {
    /**
     * 发布文章
     * @param articleDto 文章内容
     * @return ResponseResult
     */
    @PostMapping("api/v1/article/save")
    public ResponseResult saveArticle(@RequestBody ArticleDto articleDto);

    /**
     * 文章的上架或下架
     * @param news 文章
     * @return ResponseResult
     */
    @PostMapping("api/v1/articleconfig/down_or_up")
    public ResponseResult articleConfigDownOrUp(@RequestParam WmNews news);

    /**
     * 根据文章id查询文章内容（es测试）
     * @param articleId 文章id
     * @return ResponseResult
     */
    @GetMapping("api/v1/article/findOneById/{id}")
    public ResponseResult findOneById(@PathVariable("id") Long articleId);

    /**
     * 查询所有文章 已经上架且没有被删除（es测试）
     * @return ResponseResult
     */
    @GetMapping("api/v1/article/findAll")
    public ResponseResult findAll();

    /**
     * 根据频道id查询文章（查询此频道是否有文章）
     * @param id 频道id
     * @return ResponseResult
     */
    @PostMapping("api/v1/article/findArticleByChannelId")
    public ResponseResult findArticleByChannelId(@RequestParam Integer id);

    /**
     * 根据id修改文章
     * @param article 文章信息
     * @return boolean
     */
    @PostMapping("api/v1/article/updateArticle")
    public boolean updateArticle(@RequestBody Article article);

    /**
     * 根据id查找文章
     * @param id 文章id
     * @return boolean
     */
    @PostMapping("api/v1/article/findArticleById")
    public Article findArticleById(@RequestParam Long id);

    /**
     * 查询最近5天的文章数据（未下架 未删除）
     *
     * @return boolean
     */
    @PostMapping("api/v1/article/selectFiveDaysArticle")
    public ResponseResult selectFiveDaysArticle();
}
